//
//  YHKEmoticonManager.swift
//  xinlangweiBo2
//
//  Created by 杨和逵 on 16/3/8.
//  Copyright © 2016年 yanghekui. All rights reserved.
//

import UIKit


//这个类用于管理表情 
//获取数据
class YHKEmoticonManager: NSObject {

    //定义4个表情数组，用来存放表情
    //最近表情
    static var recentEmotions: [YHKEmoticonMdeol] = [YHKEmoticonMdeol]()
    
    //默认表情
    static var defaultEmotions: [YHKEmoticonMdeol] = YHKEmoticonManager.readEmotions("com.sina.default")
    
    //emoji
    static var emojiEmoticons: [YHKEmoticonMdeol] = YHKEmoticonManager.readEmotions("com.apple.emoji")
    
    //lxh
    static var lxhEmoticons: [YHKEmoticonMdeol] = YHKEmoticonManager.readEmotions("com.sina.lxh")

    //给外界提供类方法，直接返回所有数组，这样一来就是三维数组
    class func getAllEomoticons() -> [[[YHKEmoticonMdeol]]] {
        
        return [pageEmotcions(recentEmotions),pageEmotcions(defaultEmotions),pageEmotcions(emojiEmoticons),pageEmotcions(lxhEmoticons)]
    }
    
    
    
    
    
    //获取数据，然后添加到对应的表情包
    class func readEmotions(package: String) -> [YHKEmoticonMdeol]{
        
        //1.创建一个数组
        var result = [YHKEmoticonMdeol]()
        
        //2.获取 Emoticons.bundle 的路径
        let bundlePath = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        
        //3.获取表情的文件夹的路径
        let packagePaht = (bundlePath as NSString).stringByAppendingPathComponent(package)
        
        //4.获取info.plst的路径
        let infoPath = (packagePaht as NSString).stringByAppendingPathComponent("info.plist")
        
        //5.读取
        let dict = NSDictionary(contentsOfFile: infoPath)!
        
        //6.获取emoticons
        let emoticons = dict["emoticons"] as! [[String:NSObject]]
        
        //7.遍历数组 将  字典转模型
        for emoticon in emoticons{
            
            let emo = YHKEmoticonMdeol(dict: emoticon)
            
            //将入径传递个YHKEmoticonMdeol paht
            emo.path = packagePaht
            
            //将模型添加到数组中
            result.append(emo)
        }
        
        
        //将获取的数组返回
        return result
        
        
    }
    
    
    
    //需要对数组进行分页
    class func pageEmotcions(emoticons:[YHKEmoticonMdeol]) -> [[YHKEmoticonMdeol]]{
        
        //1.初始化
        var result = [[YHKEmoticonMdeol]]()
        
        //2.传入数组的长度
        let count = emoticons.count
        
        //3.一个数组得分几页
        let page = (count - 1)/20 + 1
        
        //切割原有的数组
        for i in 0..<page {
            
            //定义一个长度,用于记录切割长度
            var len = 20
            
            //判断最后一页
            if i == page - 1{
                //数组的长度 - 页数*每页的个数 = 剩余切割的长度
                if count - i * 20 >= 0{
                    
                    len = count - i * 20
                }
            }
            
            let subArray = (emoticons as NSArray).subarrayWithRange(NSMakeRange(i * 20, len)) as! [YHKEmoticonMdeol]
            
            //添加到定义的二维数组中
            result.append(subArray)
            
        }
        
        return result
        
    }
  
    
    //MARK:--添加最近的表情
    class func addRecentEmoticon(emoticon:YHKEmoticonMdeol?){
        
        /*
           每一次要重新布局
              1.遍历
              2.content
        */
        
        if let emo = emoticon{
            
            //采用contains来判断一下数组里 是否有这个表情
            if !recentEmotions.contains(emo){
                
                recentEmotions.insert(emo,atIndex: 0)
                
                //最多加20个
                if recentEmotions.count > 20 {
                    //把多余的最后一个删除
                    recentEmotions.removeLast()
                }
            }
            
        }
        
        
        
        
        
    }
    
    
    
    
    
}
